From 37847fee4fe74cdbc0565567129c5a463556ed91 Mon Sep 17 00:00:00 2001 From: Felix Fietkau Date: Wed, 28 May 2025 13:03:14 +0200 Subject: [PATCH] instance: convert jail feature flags to bitmap Reduces the amount of boilerplate code Signed-off-by: Felix Fietkau --- service/instance.c | 35 ++--------------------------------- service/instance.h | 23 ++++++++++++++--------- 2 files changed, 16 insertions(+), 42 deletions(-) diff --git a/service/instance.c b/service/instance.c index 1d04041..df8c09b 100644 --- a/service/instance.c +++ b/service/instance.c @@ -1032,31 +1032,7 @@ instance_config_changed(struct service_instance *in, struct service_instance *in if (string_changed(in->jail.pidfile, in_new->jail.pidfile)) return true; - if (in->jail.procfs != in_new->jail.procfs) - return true; - - if (in->jail.sysfs != in_new->jail.sysfs) - return true; - - if (in->jail.ubus != in_new->jail.ubus) - return true; - - if (in->jail.log != in_new->jail.log) - return true; - - if (in->jail.ronly != in_new->jail.ronly) - return true; - - if (in->jail.netns != in_new->jail.netns) - return true; - - if (in->jail.userns != in_new->jail.userns) - return true; - - if (in->jail.cgroupsns != in_new->jail.cgroupsns) - return true; - - if (in->jail.console != in_new->jail.console) + if (in->jail.flags != in_new->jail.flags) return true; if (in->watchdog.mode != in_new->watchdog.mode) @@ -1548,14 +1524,7 @@ instance_config_move(struct service_instance *in, struct service_instance *in_sr in->gr_gid = in_src->gr_gid; in->has_jail = in_src->has_jail; - in->jail.procfs = in_src->jail.procfs; - in->jail.sysfs = in_src->jail.sysfs; - in->jail.ubus = in_src->jail.ubus; - in->jail.log = in_src->jail.log; - in->jail.ronly = in_src->jail.ronly; - in->jail.netns = in_src->jail.netns; - in->jail.cgroupsns = in_src->jail.cgroupsns; - in->jail.console = in_src->jail.console; + in->jail.flags = in_src->jail.flags; in->jail.argc = in_src->jail.argc; instance_config_move_strdup(&in->pidfile, in_src->pidfile); diff --git a/service/instance.h b/service/instance.h index 15eb997..215cbc7 100644 --- a/service/instance.h +++ b/service/instance.h @@ -24,15 +24,20 @@ #define SIGNALLED_OFFSET 128 struct jail { - bool procfs; - bool sysfs; - bool ubus; - bool log; - bool ronly; - bool netns; - bool userns; - bool cgroupsns; - bool console; + union { + struct { + uint32_t procfs:1; + uint32_t sysfs:1; + uint32_t ubus:1; + uint32_t log:1; + uint32_t ronly:1; + uint32_t netns:1; + uint32_t userns:1; + uint32_t cgroupsns:1; + uint32_t console:1; + }; + uint32_t flags; + }; char *name; char *hostname; char *pidfile; -- 2.30.2